﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = 0;
//		printf("hehe\n");
//	}
//	return 0;
//}

//的阶乘
//int Fact(int n)
//{
//	if (n == 0)return 1;
//	else return n * Fact(n - 1);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d\n", Fact(n));
//	return 0;
//}

//顺序打印每一位
//void Print(int n)
//{
//	if (n > 9)
//	{
//		Print(n / 10);
//	}
//	printf("%d ", n % 10);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Print(n);
//	return 0;
//}

//计算n的阶乘
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int ret = 1;
//	for (int i = 2; i <= n; i++)
//	{
//		ret *= i;
//	}
//	printf("%d\n", ret);
//}

//斐波那契
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int a = 1, b = 1, c = 1;
//	for (int i = 3; i <= n; i++)
//	{
//		c = a + b;
//		a = b;
//		b = c;
//	}
//	printf("%d\n", c);
//	return 0;
//}

//int main()
//{
//	int num = 10;
//	int n = num << 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//}

//int main()
//{
//	int num = -2;
//	int n = num >> 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//}

//int main()
//{
//	int num1 = -3;
//	int num2 = 5;
//	//1000 0000 0000 0000 0000 0000 0000 0011  -3的源码
//	//1111 1111 1111 1111 1111 1111 1111 1100  -3的反码
//	//1111 1111 1111 1111 1111 1111 1111 1101  -3的补码
//
//	//0000 0000 0000 0000 0000 0000 0000 0101  5的源码/反码/补码
//	printf("%d\n", num1 & num2);
//	//1111 1111 1111 1111 1111 1111 1111 1101  
//	//0000 0000 0000 0000 0000 0000 0000 0101  
//	//0000 0000 0000 0000 0000 0000 0000 0101    5
//	printf("%d\n", num1 | num2);
//	//1111 1111 1111 1111 1111 1111 1111 1101  
//	//0000 0000 0000 0000 0000 0000 0000 0101  
//	//1111 1111 1111 1111 1111 1111 1111 1101    补码
//	// 补码->源码 ：补码取反+1
//	//1000 0000 0000 0000 0000 0000 0000 0010    反码
//	//1000 0000 0000 0000 0000 0000 0000 0011    -3
//	printf("%d\n", num1 ^ num2);
//	//1111 1111 1111 1111 1111 1111 1111 1101  
//	//0000 0000 0000 0000 0000 0000 0000 0101  
//	//1111 1111 1111 1111 1111 1111 1111 1000    补码
//	//1000 0000 0000 0000 0000 0000 0000 0111    反码
//	//1000 0000 0000 0000 0000 0000 0000 1000    -8
//	printf("%d\n", ~0);
//	//0000 0000 0000 0000 0000 0000 0000 0000 
//	//1111 1111 1111 1111 1111 1111 1111 1111   补码
//	//1000 0000 0000 0000 0000 0000 0000 0000   反码
//	//1000 0000 0000 0000 0000 0000 0000 0001   -1
//	return 0;
//}

//不创建第三个变量实现两个数的交换
//int main()
//{
//	int a = 10;
//	int b = 20;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("a=%d,b=%d", a, b);
//	return 0;
//}

//一个数二进制中1的个数
//int main()
//{
//	int a = 10;
//	int count = 0;
//	/*for (int i = 0; i < 32; i++)
//	{
//		if ((a >> i) & 1)count++;
//	}*/
//	/*while (a)
//	{
//		if (a % 2)count++;
//		a /= 2;
//	}*/
//	while (a)
//	{
//		count++;
//		a = a & (a - 1);
//	}
//	printf("%d\n", count);
//	return 0;
//}

//将13⼆进制序列的第5位修改为1，然后再改回0
//int main()
//{
//	int num = 13;
//	//0000 0000 0000 0000 0000 0000 0000 1101  13的源码
//	//0000 0000 0000 0000 0000 0000 0001 1101  29
//	//0000 0000 0000 0000 0000 0000 0000 1101
//	//先将第5位改成1
//	num |= (1 << (5 - 1));
//	printf("右移后：%d\n", num);
//	//再改回来
//	num &= ~(1 << (5 - 1));
//	printf("改回来：%d\n", num);
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = (a > b, a = b + 10, a, b = a + 1);//逗号表达式
//	printf("c=%d\n", c);
//	return 0;
//}

//struct stu
//{
//	char name[20];//姓名
//	int age;//年龄
//};
//void print_stu(struct stu s)
//{
//	printf("%s %d\n", s.name, s.age);
//}
//void set_stu(struct stu* ps)
//{
//	strcpy(ps->name, "李四");
//	ps->age = 28;
//}
//int main()
//{
//	struct stu s = { "张三", 20 };
//	print_stu(s);
//	set_stu(&s);
//	print_stu(s);
//	return 0;
//}
//int main()
//{
//	struct stu s1 = { "zhangsan",18 };
//	struct stu s2 = { .age = 20,.name = "lisi" };
//	//.直接访问  ->间接访问
//	printf("%s,%d\n", s1.name, s1.age);
//	struct stu* ptr = &s1;
//	printf("%s %d\n", ptr->name, ptr->age);
//	return 0;
//}

//int main()
//{
//	int i = 10;
//	i = i-- - --i * (i = -3) * i++ + ++i;
//	printf("i = %d\n", i);
//	return 0;
//}
//int main()
//{
//	int i = 1;
//	int ret = (++i) + (++i) + (++i);
//	printf("%d\n", ret);
//	printf("%d\n", i);
//	return 0;
//}
#include <string.h>
//int main()
//{
//	char str[] = { 'a','b','c' };//随机值
//	printf("%d\n", strlen(str));
//	return 0;
//}
//int main()
//{
//    printf("%d\n", strlen("c:\test\121"));//7
//    return 0;
//}
//int main()
//{
//	int a, b, c;
//	a = 5;
//	c = ++a;
//	b = ++c, c++, ++a, a++;
//	//a=8 b=7 c=8
//	b += a++ + c;
//	printf("a = %d b = %d c = %d\n:", a, b, c);//9 23 8
//	return 0;
//}
//int main()
//{
//	int a, b;
//	scanf("%d%d", &a, &b);
//	printf("a=%d,b=%d\n", a, b);
//	return 0;
//}
//int main()
//{
//    printf("%5d\n", 123);
//    return 0;
//}
//int main()
//{
//	//写一个代码打印1-100之间所有3的倍数的数字
//	/*for (int i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)printf("%d ", i);
//	}*/
//	//将三个整数数按从大到小输出
//	//int a, b, c;
//	//scanf("%d%d%d", &a, &b, &c);
//	//if (a < b)
//	//{
//	//	int tmp = a; a = b; b = tmp;//a>b
//	//}
//	//if (a < c)
//	//{
//	//	int tmp = a; a = c; c = tmp;//a>c
//	//}
//	//if (b < c)
//	//{
//	//	int tmp = b; b = c; c = tmp;
//	//}
//	//printf("%d %d %d\n", a, b, c);
//	//1到 100 的所有整数中出现多少个数字9
//	/*int count = 0;
//	for (int i = 1; i <= 100; i++)
//	{
//		int tmp = i;
//		while (tmp)
//		{
//			if (tmp % 10 == 9)count++;
//			tmp /= 10;
//		}
//	}
//	printf("%d\n", count);*/
//	//在屏幕上输出9*9乘法口诀表
//	/*for (int i = 1; i <= 9; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%d*%d=%2d ", j, i, i * j);
//		}
//		printf("\n");
//	}*/
//	//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值，打印出结果
//	/*int flag = 1;
//	double sum = 0.0;
//	for (int i = 1; i <= 100; i++)
//	{
//		sum+=flag*1.0 / i;
//		flag = -flag;
//	}
//	printf("%lf", sum);*/
//	//给定两个数，求这两个数的最大公约数 --辗转相除法
//	int a = 18, b = 24;
//	int c = 0;
//	while (c = a % b)
//	{
//		a = b;
//		b = c;
//	}
//	printf("%d\n", b);
//}

//输入10个整数，求平均值
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sum = 0;
//	for (int i = 0; i < 10; i++)
//	{
//		sum += arr[i];
//	}
//	printf("%lf\n", sum * 1.0 / 10);
//	return 0;
//}
//喝汽水，1瓶汽水1元，2个空瓶可以换一瓶汽水，给20元，可以喝多少汽水
//int main()
//{
//	int count = 0;
//	int sum = 20;
//	count += sum / 1;
//	while (sum>1)
//	{
//		count += sum / 2;
//		sum =sum/2+sum%2;
//	}
//	printf("%d\n", count);
//	return 0;
//}
//求出0～100000之间的所有“水仙花数”并输出。
//“水仙花数”是指一个n位数，其各位数字的n次方之和确好等于该数本身，如:153＝1 ^ 3＋5 ^ 3＋3 ^ 3，则153是一个“水仙花数”。
#include <math.h>
//int func1(int x)//求n位数
//{
//	int n = 0;
//	while (x)
//	{
//		n++;
//		x /= 10;
//	}
//	return n;
//}
//int func2(int x, int n)
//{
//	int sum = 0;
//	while (x)
//	{
//		sum +=(int)pow(x % 10, n);
//		x /= 10;
//	}
//	return sum;
//}
//int main()
//{
//	//1.几位数 2.各个位置的n次方相加
//	/*printf("%d\n", (int)pow(2, 2));
//	printf("%d\n", func2(153, func1(153)));*/
//	for (int i = 0; i <= 100000; i++)
//	{
//		if (func2(i, func1(i)) == i)printf("%d ", i);
//	}
//	return 0;
//}
//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和，其中a是一个数字，
//例如：2 + 22 + 222 + 2222 + 22222
//int main()
//{
//	int a = 2;
//	int sum = 0,tmp=0;
//	for (int i = 1; i <= 5; i++)
//	{
//		tmp = tmp * 10 + a;
//		sum += tmp;
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//打印菱形
//int main()
//{
//	int n = 5;
//	上半部分
//	for (int i = 0; i <= n / 2; i++)
//	{
//		空格
//		for (int j = n / 2; j > i; j--)
//			printf(" ");
//		内容
//		for (int j = 0; j < 2 * i + 1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	下半部分
//	for (int i=0;i<n/2;i++)
//	{
//		for (int j = 0;j<=i;j++)
//			printf(" ");
//		for (int j = n/2-2*i;j>=0;j--)
//			printf("*");
//		printf("\n");
//	}
//	return 0;
//}
//递归和非递归分别实现求第n个斐波那契数
//int func1(int x)
//{
//	if (x == 1 || x == 2)return 1;
//	else return func1(x - 1) + func1(x - 2);
//}
//int func2(int x)
//{
//	if (x == 1 || x == 2)return 1;
//	int a = 1, b = 1, c = 1;
//	for (int i = 3; i <= x; i++)
//	{
//		c = a + b;
//		a = b; b = c;
//	}
//	return c;
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	//递归
//	printf("%d\n", func1(n));
//	//非递归
//	printf("%d\n", func2(n));
//	return 0;
//}
//递归实现n的k次方
//int dfs(int n, int k)
//{
//	if (k == 1)return n;
//	else return n* dfs(n, k - 1);
//}
//int main()
//{
//	int n = 0,k=0;
//	scanf("%d%d", &n,&k);
//	printf("%d\n", dfs(n, k));
//	return 0;
//}
//写一个递归函数DigitSum(n)，输入一个非负整数，返回组成它的数字之和例如，调用DigitSum(1729)，则应该返回1 + 7 + 2 + 9，它的和是19
//输入：1729，输出：19
//int DigitSum(int x)
//{
//	if (x <= 9)return x;
//	else return x % 10 + DigitSum(x / 10);
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	printf("%d\n", DigitSum(n));
//	return 0;
//}
//递归和非递归分别实现求n的阶乘
//int dfs(int x)
//{
//	if (x == 1)return x;
//	else return x * dfs(x - 1);
//}
//int func(int x)
//{
//	int sum = 1;
//	for (int i = x; i > 0; i--)
//	{
//		sum *= i;
//	}
//	return sum;
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	//递归
//	printf("%d\n", dfs(n));
//	//非递归
//	printf("%d\n", func(n));
//}
//递归方式实现打印一个整数的每一位
//void dfs(int n)
//{
//	if (n > 9)dfs(n / 10);
//	printf("%d ", n % 10);
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	dfs(n);
//}
//单身狗1
//在一个整型数组中，只有一个数字出现一次，其他数组都是成对出现的，请找出那个只出现一次的数字。
//例如：数组中有：1 2 3 4 5 1 2 3 4，只有5出现一次，其他数字都出现2次，找出5
int main()
{
	int arr[9] = { 1,2,3,4,5,1,2,3,4 };
	int ret = 0;
	for (int i = 0; i < 9; i++)
	{
		ret ^= arr[i];
	}
	printf("%d\n", ret);
	return 0;
}